<?php

require_once($_SERVER["DOCUMENT_ROOT"] . 'phpkurs/labb1/model/Loginmodel.php');
require_once($_SERVER["DOCUMENT_ROOT"] . 'phpkurs/labb1/view/UserInfo.php');
require_once($_SERVER["DOCUMENT_ROOT"] . 'phpkurs/labb1/view/Loginview.php');
require_once($_SERVER["DOCUMENT_ROOT"] . 'phpkurs/labb1/view/HTMLView.php');

namespace controller;

	class userLogin {

		private $usrInfoView;
		private $loginM;
		private $loginView;
		private $pageView;

		function __construct() {
			$this->usrInfoView = new UserInfo();
			$this->loginM = new Loginmodel();
			$this->loginView = new Loginview();
			$this->pageView = new HTMLView();
		}

		/**
		 * @return string med html kod
		 * En funktion som loggar in eller loggar ut användaren.
		 * Den gör det genom att kolla om användaren har sparat sina användaruppgifter i en kaka om det finns och är rätt så loggas användaren in.
		 * Annars kollar den om det finns en sessionkaka om man laddar om sidan så loggas man inte ut.
		 * Om inte det finns kollar den användarens indata är det rätt loggas den in.
		 * Annars visas ett felmeddelande och loginsidan visas.
		 */
		public function loginUser() {
			if($this->loginView->getLogoutInfo()) {
				return $this->logoutUser();
			}
			else if($this->usrInfoView->cookieIsset()) {
				if($this->loginM->loginUserWithCookie()) {
					return $this->pageView->getMemberPage();
				}
			}
			else if($this->usrInfoView->sessionSet()) {
				return $this->pageView->getMemberPage();
			}
			else if($this->usrInfoView->serverRequestMethod() == "POST") {
				$loggInfo = $this->loginM->validateUsrInfo($this->usrInfoView->getUserInfo());
				if($loggInfo == "") {
					if($this->usrInfoView->getRememberData()) {
						$this->saveUser();
						$this->pageView->setLogginInfo("Inloggning lyckades och vi kommer ihåg dig nästa gång");
					}
					else {
						$this->pageView->setLogginInfo("Inloggning lyckades");
					}
					return $this->pageView->getMemberPage();
				}
				else {
					$this->pageView->setLogginInfo($loggInfo);
					$this->pageView->setInputValue($_POST["uName"]);
					return $this->pageView->getLoginPage();
				}
			}
			else{
				return $this->pageView->getLoginPage();
			}
		}

		/**
		 * @return string med html kod
		 * Funktion som tar bort alla cookies och loggar ut användaren.
		 */
		public function logoutUser() {
			$this->loginM->removeUsr();
			session_destroy();
			$this->pageView->setLogginInfo("Du har nu loggat ut");
			return $this->pageView->getLoginPage();
		}

		public function saveUser() {
			$this->loginM->saveUsrInfo($this->usrInfoView->getUserInfo());
		}
	}
?>